package com.yzg.simple.netty.hartbeat;

import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.timeout.IdleStateHandler;

import java.util.concurrent.TimeUnit;

/**
 * @author misterWei
 * @create 2020年01月02号:22点12分
 * @mailbox mynameisweiyan@gmail.com
 */
public class NettyHeartbeatServerInitializer extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel ch) throws Exception {
        ChannelPipeline pipeline = ch.pipeline();
        /**
         * 三个参数说明
         * readerIdleTime : 如果没有读的事件超过这个阈值就会触发事件(userEventTriggered)
         * writerIdleTime : 如果没有写的事件超过这个阈值就会触发事件(userEventTriggered)
         * allIdleTime    : 如果没有读写的事件超过这个阈值就会触发事件(userEventTriggered)
         *
         * 注意了这就是 执行链条 事件触发之后就会执行下一次Handler
         *   也就是 IdleStateHandler 执行之后就会触发 NettyHeartbeatServerHandler 这个Handler
         */
        pipeline.addLast(new IdleStateHandler(10,20,50, TimeUnit.SECONDS));
        pipeline.addLast(new NettyHeartbeatServerHandler());
    }
}
